package com.springcloud.zuul.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.springcloud.zuul.common.utlis.JsonResult;
import com.springcloud.zuul.entity.SysMenuEntity;
import com.springcloud.zuul.entity.SysMenusEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 菜单管理
 *
 */
public interface SysMenuService extends IService<SysMenuEntity> {

	/**
	 * 根据父菜单，查询子菜单
	 * @param parentId 父菜单ID
	 * @param menuIdList  用户菜单ID
	 */
	List<SysMenuEntity> queryListParentId(String parentId, List<String> menuIdList,String productId);

	/**
	 * 根据父菜单，查询子菜单
	 * @param parentId 父菜单ID
	 */
	List<SysMenuEntity> queryListParentId(String parentId,String productId);
	
	/**
	 * Description:获取不包含按钮、效验、文档的菜单列表
	 * @author zhlu
	 * @date 2019/12/30 2:00 下午
	 * @param
	 * @return java.util.List<com.springcloud.zuul.entity.SysMenuEntity>
	 */
	List<SysMenuEntity> queryNotButtonList();
	
	/**
	 * 获取用户菜单列表
	 */
	List<SysMenuEntity> getUserMenuList(String userId,String productId);

	/**
	 * 删除
	 */
	void delete(String menuId);

	/**
	 * Description:根据菜单编码获取菜单资料
	 * @author zhlu
	 * @date 2019/12/28 10:26 上午
	 * @param menuId
	 * @return com.springcloud.zuul.entity.SysMenuEntity
	 */
	SysMenuEntity queryByMenuId(String menuId);

	/**
	 * Description:根据菜单编码获取是否存在当前编码
	 * @author zhlu
	 * @date 2019/12/28 10:47 上午
	 * @param menuId
	 * @return int
	 */
	int countByMenuId(String menuId);

	/**
	 * Description:获取所有的菜单
	 * @author zhlu
	 * @date 2019/12/30 11:52 上午
	 * @param
	 * @return com.springcloud.zuul.common.utlis.JsonResult
	 */
	JsonResult getMenuList();
	
	/**
	 * Description:获取相关产品、公司、角色菜单权限列表
	 * @author zhlu
	 * @date 2020/1/2 3:57 下午
	 * @param 
	 * @return com.springcloud.zuul.common.utlis.JsonResult
	 */
	JsonResult queryMenusList(SysMenusEntity sysMenusEntity);

	/**
	 * Description:获取公司与产品的权限功能列表
	 * @author zhlu
	 * @date 2020/1/7 2:26 下午
	 * @param
	 * @return java.util.List<java.lang.String>
	 */
	List<String>queryDeptAndMenuList(String deptId,List<String> produList);

	/**
	 * Description:根据产品编码。获取当前产品的编码
	 * @author zhlu
	 * @date 2020/1/7 2:32 下午
	 * @param
	 * @return java.util.List<java.lang.String>
	 */
	List<String>queryProductIdList(List<String> productId);
}
